package vf1.iu;

/************************************************************************
  			VF1_IU_Espera.java

    BattleField Tactics Online - A Strategy RPG Online Game
    Copyright (C) 2008  
	Douglas Ribeiro, Kely Marques Rosa, Rodrigo da Fonseca Lacerda

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

	Contact: douglas666@gmail.com
 **************************************************************************/


import java.awt.Color;
import java.awt.Dimension;
import java.awt.DisplayMode;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.List;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;

import vf1.so.*;
import vf1.rn.*;


/**
 * Class VF1_IU_Espera
 */
public class VF1_IU_Espera extends JPanel implements VF1_IU_IEspera,MouseListener { 
	//
	// Fields
	//


	private static final long serialVersionUID = 1L;
	private JFrame frame = new JFrame(); 
	private JLayeredPane pane = new JLayeredPane(); 
	private VF1_RN_Espera espera = new VF1_RN_Espera(); 

	private JButton sair = new JButton("Sair");
	private JButton batalhar = new JButton("Batalhar Teste"); //atributo teste

	private String Jogador1;
	private String Jogador2;
	private String Jogador3;
	private String Jogador4;
	//
	// Constructors
	//
	public VF1_IU_Espera () { };

	//
	// Methods
	//


	//
	// Accessor methods
	//

	/**
	 * Set the value of espera
	 * @param newVar the new value of espera
	 */
	private void setEspera ( VF1_RN_Espera newVar ) {
		espera = newVar;
	}

	/**
	 * Get the value of espera
	 * @return the value of espera
	 */
	public VF1_RN_Espera getEspera ( ) {
		return espera;
	}

	/**
	 * Set the value of sair
	 * @param newVar the new value of sair
	 */
	private void setSair ( JButton newVar ) {
		sair = newVar;
	}

	/**
	 * Get the value of sair
	 * @return the value of sair
	 */
	private JButton getSair ( ) {
		return sair;
	}

	//
	// Other methods
	//

	/**
	 */
	public void apresentarTelaEspera( ) 
	{
		/*MA
	    apresenta janela em java;
	    apresenta bot�o sair;
	    imprime texto da lista de espera na tela usando a lista retornada por espera.getEspera(); //Padrao Observer*/

		JFrame f = getFrame();
		setBackground(Color.lightGray);
		setForeground(Color.black);

		getEspera().registerObserver(this);
		//getEspera().receberListaEspera();
		setFont(new Font("Dialog", Font.CENTER_BASELINE, 20));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JLayeredPane p = getPane();

		p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
		p.add(Box.createRigidArea(new Dimension(800, 600)));
		this.add(p);
		f.setContentPane(this);
		f.pack();
		int w = f.getWidth();
		int h = f.getHeight();
		p.removeAll();

		p.add(Box.createVerticalStrut(h - 600 + 400));
		p.add(Box.createHorizontalStrut(w - 800 + 700));
		//JLabel text = new JLabel();
		//text.setText("Usuário:");
		//p.add(text);
		//this.getServidor_form().setEditable(true);
		//p.add(this.getUsuario_form());
		//JLabel text1 = new JLabel();
		//text1.setText("Servidor:");
		//p.add(text1);
		//p.add(this.getServidor_form());
		this.getSair().addMouseListener(this);
		p.add(this.getSair());

		/////////////////////Douglas - PARA TESTE
		this.getBatalhar().addMouseListener(this);
		p.add(this.getBatalhar());
		////////////////////

		this.add(p);

		//System.out.printf("%d %d", w, h);

		p.setOpaque(false);

		f.setContentPane(this);
		f.setSize(w, h);
		f.setResizable(false);
		f.setVisible(true);
	}

	public void paintComponent(Graphics g) {   //Novo método no MI

		super.paintComponents(g);
		if (g instanceof Graphics2D) {
			Graphics2D g2 = (Graphics2D)g;
			g2.setRenderingHint(
					RenderingHints.KEY_TEXT_ANTIALIASING,
					RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
		}
		g.drawString("Esperando Jogadores", 10, 30);
//		setFont(new Font("Dialog", Font.CENTER_BASELINE, 12));
		g.drawString(String.format("Jogador 1: %s", getJogador1()), 10, 50);
		g.drawString(String.format("Jogador 2: %s", getJogador2()), 10, 70);
		g.drawString(String.format("Jogador 3: %s", getJogador3()), 10, 90);
		g.drawString(String.format("Jogador 4: %s", getJogador4()), 10, 110);
	}

	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		if (e.getSource()==getSair()) {
			getFrame().dispose();
			
		VF1_SO_BFTCliente cliente = VF1_SO_BFTCliente.getCliente();
		cliente.finalizarCliente();
		}
		if (e.getSource()==getBatalhar()) { //teste de tela
			getFrame().dispose();
			VF1_SO_BFTCliente cliente = VF1_SO_BFTCliente.getCliente();
			//cliente.iniciarTelaBatalha();
			/*getScreen_espera().restoreScreen();
		VF1_SO_BFTCliente cliente = VF1_SO_BFTCliente.getCliente();
		cliente.iniciarTelaBatalha();*/
		}

	}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	protected JButton getBatalhar() { //getter and setter teste
		return batalhar;
	}

	protected void setBatalhar(JButton batalhar) { //getter and setter teste
		this.batalhar = batalhar;
	}

	public JFrame getFrame() {
		return frame;
	}

	public void setFrame(JFrame frame) {
		this.frame = frame;
	}

	public JLayeredPane getPane() {
		return pane;
	}

	public void setPane(JLayeredPane pane) {
		this.pane = pane;
	}


	public void synchronizeState(VF1_RN_IEspera subject) {
		if (subject.equals(getEspera())) {
			//List lista_de_jogadores = getEspera().getEspera();

			/*setJogador1(((VF1_RN_Jogador) lista_de_jogadores.get(0)).getNome());
		setJogador2(((VF1_RN_Jogador) lista_de_jogadores.get(1)).getNome());
		setJogador3(((VF1_RN_Jogador) lista_de_jogadores.get(2)).getNome());
		setJogador4(((VF1_RN_Jogador) lista_de_jogadores.get(3)).getNome());*/
			setJogador1(getEspera().getJogador1().getNome());
			setJogador2(getEspera().getJogador2().getNome());
			setJogador3(getEspera().getJogador3().getNome());
			setJogador4(getEspera().getJogador4().getNome());
		}
		repaint();
		System.out.printf("isso está sendo chamado?");

	}

	public String getJogador1() {
		return Jogador1;
	}

	public void setJogador1(String jogador1) {
		Jogador1 = jogador1;
	}

	public String getJogador2() {
		return Jogador2;
	}

	public void setJogador2(String jogador2) {
		Jogador2 = jogador2;
	}

	public String getJogador3() {
		return Jogador3;
	}

	public void setJogador3(String jogador3) {
		Jogador3 = jogador3;
	}

	public String getJogador4() {
		return Jogador4;
	}

	public void setJogador4(String jogador4) {
		Jogador4 = jogador4;
	}




}
